From 2ddff872cd965c687f16cf7cc2053b230acfd5dc Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Tue, 21 Apr 2020 08:46:35 -0400 Subject: [PATCH] css: Drop the -gtk-icon-theme property We want to always use the current icon theme, and only have the minimum amount of custom properties. --- docs/reference/gtk/css-overview.xml | 7 +- gtk/gtkcssanimatedstyle.c | 4 - gtk/gtkcssiconthemevalue.c | 175 ---------------------------- gtk/gtkcssiconthemevalueprivate.h | 38 ------ gtk/gtkcssstaticstyle.c | 4 - gtk/gtkcssstyle.c | 2 - gtk/gtkcssstyleprivate.h | 1 - gtk/gtkcssstylepropertyimpl.c | 14 --- gtk/gtkcsstypesprivate.h | 1 - gtk/gtkfilechooserbutton.c | 15 --- gtk/gtkiconhelper.c | 2 +- gtk/gtkmountoperation.c | 2 - gtk/gtkwindow.c | 3 - gtk/meson.build | 1 - 14 files changed, 2 insertions(+), 267 deletions(-) delete mode 100644 gtk/gtkcssiconthemevalue.c delete mode 100644 gtk/gtkcssiconthemevalueprivate.h diff --git a/docs/reference/gtk/css-overview.xml b/docs/reference/gtk/css-overview.xml index 627a2b0e76..67f32d6731 100644 --- a/docs/reference/gtk/css-overview.xml +++ b/docs/reference/gtk/css-overview.xml @@ -339,7 +339,7 @@ scale[.fine-tune] -gtk-icontheme(Name) The specified icon name is used to look up a themed icon, while taking into - account the values of the -gtk-icon-theme and -gtk-icon-palette properties. + account the values of the -gtk-icon-palette property. This kind of image is mainly used as value of the -gtk-icon-source property. @@ -599,11 +599,6 @@ scale[.fine-tune] Image, builtin or none used for builtin icons in buttons and expanders - - -gtk-icon-theme - Theme name - icon theme to use with -gtk-icontheme() - -gtk-icon-size Length diff --git a/gtk/gtkcssanimatedstyle.c b/gtk/gtkcssanimatedstyle.c index 15745f9b9e..d67bb9f191 100644 --- a/gtk/gtkcssanimatedstyle.c +++ b/gtk/gtkcssanimatedstyle.c @@ -176,10 +176,6 @@ gtk_css_animated_style_set_animated_value (GtkCssAnimatedStyle *animated, unshare_core (animated); gtk_css_take_value (&style->core->font_size, value); break; - case GTK_CSS_PROPERTY_ICON_THEME: - unshare_core (animated); - gtk_css_take_value (&style->core->icon_theme, value); - break; case GTK_CSS_PROPERTY_ICON_PALETTE: unshare_core (animated); gtk_css_take_value (&style->core->icon_palette, value); diff --git a/gtk/gtkcssiconthemevalue.c b/gtk/gtkcssiconthemevalue.c deleted file mode 100644 index 0708d84f77..0000000000 --- a/gtk/gtkcssiconthemevalue.c +++ /dev/null @@ -1,175 +0,0 @@ -/* GTK - The GIMP Toolkit - * Copyright (C) 2011 Red Hat, Inc. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library. If not, see . - */ - -#include "config.h" - -#include "gtkcssiconthemevalueprivate.h" - -#include "gtkicontheme.h" -#include "gtksettingsprivate.h" -#include "gtkstyleproviderprivate.h" -#include "gtkintl.h" - -/* - * The idea behind this value (and the '-gtk-icon-theme' CSS property) is - * to track changes to the icon theme. - * - * We create a new instance of this value whenever the icon theme changes - * (via emitting the changed signal). So as long as the icon theme does - * not change, we will compute the same value. We can then compare values - * by pointer to see if the icon theme changed. - */ - -struct _GtkCssValue { - GTK_CSS_VALUE_BASE - GtkIconTheme *icontheme; - guint changed_id; -}; - -static void -gtk_css_value_icon_theme_disconnect_handler (GtkCssValue *value) -{ - if (value->changed_id == 0) - return; - - g_object_set_data (G_OBJECT (value->icontheme), "-gtk-css-value", NULL); - - g_signal_handler_disconnect (value->icontheme, value->changed_id); - value->changed_id = 0; -} - -static void -gtk_css_value_icon_theme_changed_cb (GtkIconTheme *icontheme, - GtkCssValue *value) -{ - gtk_css_value_icon_theme_disconnect_handler (value); -} - -static void -gtk_css_value_icon_theme_free (GtkCssValue *value) -{ - gtk_css_value_icon_theme_disconnect_handler (value); - - if (value->icontheme) - g_object_unref (value->icontheme); - - g_slice_free (GtkCssValue, value); -} - -static GtkCssValue * -gtk_css_value_icon_theme_compute (GtkCssValue *icon_theme, - guint property_id, - GtkStyleProvider *provider, - GtkCssStyle *style, - GtkCssStyle *parent_style) -{ - GtkIconTheme *icontheme; - - if (icon_theme->icontheme) - icontheme = icon_theme->icontheme; - else - icontheme = gtk_icon_theme_get_for_display (_gtk_settings_get_display (gtk_style_provider_get_settings (provider))); - - return gtk_css_icon_theme_value_new (icontheme); -} - -static gboolean -gtk_css_value_icon_theme_equal (const GtkCssValue *value1, - const GtkCssValue *value2) -{ - return FALSE; -} - -static GtkCssValue * -gtk_css_value_icon_theme_transition (GtkCssValue *start, - GtkCssValue *end, - guint property_id, - double progress) -{ - return NULL; -} - -static void -gtk_css_value_icon_theme_print (const GtkCssValue *icon_theme, - GString *string) -{ - g_string_append (string, "initial"); -} - -static const GtkCssValueClass GTK_CSS_VALUE_ICON_THEME = { - "GtkCssIconThemeValue", - gtk_css_value_icon_theme_free, - gtk_css_value_icon_theme_compute, - gtk_css_value_icon_theme_equal, - gtk_css_value_icon_theme_transition, - NULL, - NULL, - gtk_css_value_icon_theme_print -}; - -static GtkCssValue default_icon_theme_value = { >K_CSS_VALUE_ICON_THEME, 1, FALSE, NULL, 0 }; - -GtkCssValue * -gtk_css_icon_theme_value_new (GtkIconTheme *icontheme) -{ - GtkCssValue *result; - - if (icontheme == NULL) - return _gtk_css_value_ref (&default_icon_theme_value); - - result = g_object_get_data (G_OBJECT (icontheme), "-gtk-css-value"); - if (result) - return _gtk_css_value_ref (result); - - result = _gtk_css_value_new (GtkCssValue, >K_CSS_VALUE_ICON_THEME); - result->icontheme = g_object_ref (icontheme); - - g_object_set_data (G_OBJECT (icontheme), I_("-gtk-css-value"), result); - result->changed_id = g_signal_connect (icontheme, "changed", G_CALLBACK (gtk_css_value_icon_theme_changed_cb), result); - - return result; -} - -GtkCssValue * -gtk_css_icon_theme_value_parse (GtkCssParser *parser) -{ - GtkIconTheme *icontheme; - GtkCssValue *result; - char *s; - - s = gtk_css_parser_consume_string (parser); - if (s == NULL) - return NULL; - - icontheme = gtk_icon_theme_new (); - gtk_icon_theme_set_theme_name (icontheme, s); - - result = gtk_css_icon_theme_value_new (icontheme); - - g_object_unref (icontheme); - g_free (s); - - return result; -} - -GtkIconTheme * -gtk_css_icon_theme_value_get_icon_theme (GtkCssValue *value) -{ - g_return_val_if_fail (value->class == >K_CSS_VALUE_ICON_THEME, NULL); - - return value->icontheme; -} diff --git a/gtk/gtkcssiconthemevalueprivate.h b/gtk/gtkcssiconthemevalueprivate.h deleted file mode 100644 index 420d49072d..0000000000 --- a/gtk/gtkcssiconthemevalueprivate.h +++ /dev/null @@ -1,38 +0,0 @@ -/* - * Copyright © 2012 Red Hat Inc. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library. If not, see . - * - * Authors: Alexander Larsson - */ - -#ifndef __GTK_CSS_ICON_THEME_VALUE_PRIVATE_H__ -#define __GTK_CSS_ICON_THEME_VALUE_PRIVATE_H__ - -#include "gtkicontheme.h" - -#include "gtkcssparserprivate.h" -#include "gtkcssvalueprivate.h" - -G_BEGIN_DECLS - -GtkCssValue * gtk_css_icon_theme_value_new (GtkIconTheme *icontheme); - -GtkCssValue * gtk_css_icon_theme_value_parse (GtkCssParser *parser); - -GtkIconTheme * gtk_css_icon_theme_value_get_icon_theme (GtkCssValue *value); - -G_END_DECLS - -#endif /* __GTK_CSS_ICON_THEME_VALUE_PRIVATE_H__ */ diff --git a/gtk/gtkcssstaticstyle.c b/gtk/gtkcssstaticstyle.c index fee5c01e56..d4f7bb5fc7 100644 --- a/gtk/gtkcssstaticstyle.c +++ b/gtk/gtkcssstaticstyle.c @@ -50,7 +50,6 @@ static const int core_props[] = { GTK_CSS_PROPERTY_COLOR, GTK_CSS_PROPERTY_DPI, GTK_CSS_PROPERTY_FONT_SIZE, - GTK_CSS_PROPERTY_ICON_THEME, GTK_CSS_PROPERTY_ICON_PALETTE }; @@ -396,9 +395,6 @@ gtk_css_static_style_set_value (GtkCssStaticStyle *sstyle, case GTK_CSS_PROPERTY_FONT_SIZE: gtk_css_take_value (&style->core->font_size, value); break; - case GTK_CSS_PROPERTY_ICON_THEME: - gtk_css_take_value (&style->core->icon_theme, value); - break; case GTK_CSS_PROPERTY_ICON_PALETTE: gtk_css_take_value (&style->core->icon_palette, value); break; diff --git a/gtk/gtkcssstyle.c b/gtk/gtkcssstyle.c index 9c570a61a0..b02c4dd394 100644 --- a/gtk/gtkcssstyle.c +++ b/gtk/gtkcssstyle.c @@ -103,8 +103,6 @@ gtk_css_style_get_value (GtkCssStyle *style, return style->core->dpi; case GTK_CSS_PROPERTY_FONT_SIZE: return style->core->font_size; - case GTK_CSS_PROPERTY_ICON_THEME: - return style->core->icon_theme; case GTK_CSS_PROPERTY_ICON_PALETTE: return style->core->icon_palette; case GTK_CSS_PROPERTY_BACKGROUND_COLOR: diff --git a/gtk/gtkcssstyleprivate.h b/gtk/gtkcssstyleprivate.h index 1ee874d06b..65c8c6f700 100644 --- a/gtk/gtkcssstyleprivate.h +++ b/gtk/gtkcssstyleprivate.h @@ -83,7 +83,6 @@ struct _GtkCssCoreValues { GtkCssValue *color; GtkCssValue *dpi; GtkCssValue *font_size; - GtkCssValue *icon_theme; GtkCssValue *icon_palette; }; diff --git a/gtk/gtkcssstylepropertyimpl.c b/gtk/gtkcssstylepropertyimpl.c index b27b7730c0..94cd77f6a1 100644 --- a/gtk/gtkcssstylepropertyimpl.c +++ b/gtk/gtkcssstylepropertyimpl.c @@ -43,7 +43,6 @@ #include "gtkcsseasevalueprivate.h" #include "gtkcssfiltervalueprivate.h" #include "gtkcssfontfeaturesvalueprivate.h" -#include "gtkcssiconthemevalueprivate.h" #include "gtkcssimageprivate.h" #include "gtkcssimagevalueprivate.h" #include "gtkcssinitialvalueprivate.h" @@ -794,13 +793,6 @@ background_position_parse (GtkCssStyleProperty *property, return _gtk_css_array_value_parse (parser, _gtk_css_position_value_parse); } -static GtkCssValue * -icon_theme_value_parse (GtkCssStyleProperty *property, - GtkCssParser *parser) -{ - return gtk_css_icon_theme_value_parse (parser); -} - /*** REGISTRATION ***/ G_STATIC_ASSERT (GTK_CSS_PROPERTY_COLOR == 0); @@ -831,12 +823,6 @@ _gtk_css_style_property_init_properties (void) GTK_CSS_AFFECTS_SIZE | GTK_CSS_AFFECTS_TEXT_SIZE, font_size_parse, _gtk_css_font_size_value_new (GTK_CSS_FONT_SIZE_MEDIUM)); - gtk_css_style_property_register ("-gtk-icon-theme", - GTK_CSS_PROPERTY_ICON_THEME, - GTK_STYLE_PROPERTY_INHERIT, - GTK_CSS_AFFECTS_ICON_TEXTURE, - icon_theme_value_parse, - gtk_css_icon_theme_value_new (NULL)); gtk_css_style_property_register ("-gtk-icon-palette", GTK_CSS_PROPERTY_ICON_PALETTE, GTK_STYLE_PROPERTY_ANIMATED | GTK_STYLE_PROPERTY_INHERIT, diff --git a/gtk/gtkcsstypesprivate.h b/gtk/gtkcsstypesprivate.h index 16d4e61f66..e95e31ac9c 100644 --- a/gtk/gtkcsstypesprivate.h +++ b/gtk/gtkcsstypesprivate.h @@ -188,7 +188,6 @@ enum { /*< skip >*/ GTK_CSS_PROPERTY_COLOR, GTK_CSS_PROPERTY_DPI, GTK_CSS_PROPERTY_FONT_SIZE, - GTK_CSS_PROPERTY_ICON_THEME, GTK_CSS_PROPERTY_ICON_PALETTE, GTK_CSS_PROPERTY_BACKGROUND_COLOR, GTK_CSS_PROPERTY_FONT_FAMILY, diff --git a/gtk/gtkfilechooserbutton.c b/gtk/gtkfilechooserbutton.c index b5860d0161..6f233c89c9 100644 --- a/gtk/gtkfilechooserbutton.c +++ b/gtk/gtkfilechooserbutton.c @@ -272,8 +272,6 @@ static void gtk_file_chooser_button_root (GtkWidget *widget); static void gtk_file_chooser_button_map (GtkWidget *widget); static gboolean gtk_file_chooser_button_mnemonic_activate (GtkWidget *widget, gboolean group_cycling); -static void gtk_file_chooser_button_css_changed (GtkWidget *widget, - GtkCssStyleChange *change); static void gtk_file_chooser_button_state_flags_changed (GtkWidget *widget, GtkStateFlags previous_state); @@ -467,7 +465,6 @@ gtk_file_chooser_button_class_init (GtkFileChooserButtonClass * class) widget_class->show = gtk_file_chooser_button_show; widget_class->hide = gtk_file_chooser_button_hide; widget_class->map = gtk_file_chooser_button_map; - widget_class->css_changed = gtk_file_chooser_button_css_changed; widget_class->root = gtk_file_chooser_button_root; widget_class->mnemonic_activate = gtk_file_chooser_button_mnemonic_activate; widget_class->state_flags_changed = gtk_file_chooser_button_state_flags_changed; @@ -1346,18 +1343,6 @@ change_icon_theme (GtkFileChooserButton *button) NULL); } -static void -gtk_file_chooser_button_css_changed (GtkWidget *widget, - GtkCssStyleChange *change) -{ - GTK_WIDGET_CLASS (gtk_file_chooser_button_parent_class)->css_changed (widget, change); - - /* We need to update the icon surface, but only in case - * the icon theme really changed. */ - if (!change || gtk_css_style_change_changes_property (change, GTK_CSS_PROPERTY_ICON_THEME)) - change_icon_theme (GTK_FILE_CHOOSER_BUTTON (widget)); -} - static void gtk_file_chooser_button_root (GtkWidget *widget) { diff --git a/gtk/gtkiconhelper.c b/gtk/gtkiconhelper.c index 2bbbcc0354..872a30fda3 100644 --- a/gtk/gtkiconhelper.c +++ b/gtk/gtkiconhelper.c @@ -95,7 +95,7 @@ ensure_paintable_for_gicon (GtkIconHelper *self, GtkIconPaintable *icon; GtkIconLookupFlags flags; - icon_theme = gtk_css_icon_theme_value_get_icon_theme (style->core->icon_theme); + icon_theme = gtk_icon_theme_get_for_display (gtk_widget_get_display (self->owner)); flags = get_icon_lookup_flags (self, style); if (preload) flags |= GTK_ICON_LOOKUP_PRELOAD; diff --git a/gtk/gtkmountoperation.c b/gtk/gtkmountoperation.c index a9626ac35e..d1eb782079 100644 --- a/gtk/gtkmountoperation.c +++ b/gtk/gtkmountoperation.c @@ -1206,8 +1206,6 @@ add_pid_to_process_list_store (GtkMountOperation *mount_operation, GtkIconPaintable *icon; theme = gtk_icon_theme_get_for_display (gtk_widget_get_display (GTK_WIDGET (mount_operation->priv->dialog))); - (_gtk_style_context_peek_property (gtk_widget_get_style_context (GTK_WIDGET (mount_operation->priv->dialog)), - GTK_CSS_PROPERTY_ICON_THEME)); icon = gtk_icon_theme_lookup_icon (theme, "application-x-executable", NULL, diff --git a/gtk/gtkwindow.c b/gtk/gtkwindow.c index c79f23c150..ca1688550c 100644 --- a/gtk/gtkwindow.c +++ b/gtk/gtkwindow.c @@ -5731,9 +5731,6 @@ gtk_window_css_changed (GtkWidget *widget, update_opaque_region (window, &window_border, &allocation); } - - if (change == NULL || gtk_css_style_change_changes_property (change, GTK_CSS_PROPERTY_ICON_THEME)) - update_themed_icon (window); } /** diff --git a/gtk/meson.build b/gtk/meson.build index 71fb901e21..df08266be0 100644 --- a/gtk/meson.build +++ b/gtk/meson.build @@ -55,7 +55,6 @@ gtk_private_sources = files([ 'gtkcssfiltervalue.c', 'gtkcssfontfeaturesvalue.c', 'gtkcssfontvariationsvalue.c', - 'gtkcssiconthemevalue.c', 'gtkcssimage.c', 'gtkcssimagecrossfade.c', 'gtkcssimagefallback.c', -- 2.30.2